package labox.innovation.gameserver.ai;

/**
 * 此类包括了所有发生在AI角色身上的各种可能的事件枚举.
 */

public enum CtrlEvent {
	/** 
	 *	有些事情发生了变化，通常是上一步已经完成或可能完成了，AI将要获取下一步行动的事情
	 */
	EVT_THINK,
	/** 
	 * 	角色遭到攻击。这一事件来自每一次对角色所做的物理或魔法攻击。作为回应NPC可能会开始回击，或者如果他们已经在攻击某些人就会忽略此事件，或者更改目标等等。
	 */
	EVT_ATTACKED,
	/** 
	 * 	对一个目标增加或减少仇恨值，或者如果目标为空降低总的仇恨值
	 */
	EVT_AGGRESSION,
	/** 
	 * 	角色眩晕事件
	 */
	EVT_STUNNED,
	/** 
	 * 角色瘫痪或石化状态
	 */
	EVT_PARALYZED,
	/** 
	 * 角色开始或停止睡眠状态
	 */
	EVT_SLEEPING,
	/** 
	 * 角色盘绕状态
	 */
	EVT_ROOTED,
	/** 
	 * 之前的行为已经完成的通知事件。这个行为可能是一个对敌人的物理或魔法的攻击意图或者放弃攻击的意图已经完成了。
	 */
	EVT_READY_TO_ACT,
	/** 
	 * 用户的命令，像使用战斗魔法或改变武器等等。这个命令不会试图去改变最终的目标
	 */
	EVT_USER_CMD,
	/** 
	 * 角色抵达指定地点的事件，或者是一次通知修改移动目的地的事件（跟随，互动，随机移动和其他意图）。
	 */
	EVT_ARRIVED,
	/**  
	 * 角色到达一个中间的某个路径节点并且需要重新验证目的点的事件。如果路径较远当跟随或移动到一个节点的时候就会发送
	 */
	EVT_ARRIVED_REVALIDATE,
	/** 
	 * 忽略一个对象事件（如果这个对象被使用作为攻击目标或跟随目标等等）
	 */
	EVT_FORGET_OBJECT,
	/** 
	 * 取消事件
	 * 尝试取消目前执行的步骤，但没有改变的打算。
	 * 例如，角色被处于眩晕状态，所以它当前的攻击或运动必须取消。但在眩晕状态结束后，角色可能会尝试再次发动进攻。
	 * CANCEL的另一个是使用情况是用户尝试取消施法攻击等。
	 * 
	 */
	EVT_CANCEL,
	/** 
	 * 通知角色死亡事件 
	 */
	EVT_DEAD,
	/** 
	 * 通知混乱状态（角色会随机攻击任何人）
	 */
	EVT_CONFUSED,
	/** 
	 * 通知禁言状态（角色不能对任何人施法）
	 */
	EVT_MUTED,
	/** 
	 * 通知恐惧事件（角色向随机方向逃离）
	 */
	EVT_AFRAID,
	/** 
	 * 通知角色施法完成事件
	 */
	EVT_FINISH_CASTING,
	/**
	 *  通知角色背叛事件（角色背叛了他的主人）
	 */
	EVT_BETRAYED
}
